/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package command;

import java.util.*;
import beans.ListeUtilisateur;
import beans.UtilisateurBean;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.*;

/**
 * @author Antonin Mozzati
 * @author Yannick Schürter
 */
public class SubscribeCommand implements Command {

    @Override
    public String getCommandName() {
        return "subscribeCommand";
    }

    @Override
    public ActionFlow actionPerform(HttpServletRequest request) {
        String vue = "index";
        String erreur = "erreur";
        
        System.out.println(this.getCommandName());
        
        // Inscription
        ListeUtilisateur listeUtilisateur;
        try {
	    // On récupère la liste utilisateur du ServletContext
            listeUtilisateur = (ListeUtilisateur) request.getServletContext().getAttribute("listeUtilisateur");
        } catch (Exception ex) {
            Logger.getLogger(SubscribeCommand.class.getName()).log(Level.SEVERE, null, ex);
            return new ActionFlow(erreur, erreur+".html", true);
        }
        
        
        String login = request.getParameter("login");
        String nom = request.getParameter("nom");
        String prenom = request.getParameter("prenom");
        String mail = request.getParameter("mail");
        String pass1 = request.getParameter("pass1");
        String pass2 = request.getParameter("pass2");
        boolean dejaInscrit = false;

	
	// si les formulaires ne sont pas rempli
	if(login.equals("") || nom.equals("") || prenom.equals("") || mail.equals("") || pass1.equals(""))
	    request.setAttribute("erreur", "Erreur : tous les formulaires ne sont pas remplis.");
	else
	    
        // Si un utilisateur existe déjà
        for (UtilisateurBean ub : listeUtilisateur.getListeUtilisateurs()) {
            if(ub.getLogin().equalsIgnoreCase(login) || ub.getMail().equals(mail)){
                dejaInscrit = true;
		request.setAttribute("erreur", "Erreur : cet utilisateur est déjà inscrit.");
                break;
            }
        }
	// Si tout est OK
        if(!dejaInscrit && (pass1.equals(pass2))){
            GregorianCalendar calendar = new GregorianCalendar(); 
            String date = calendar.get(Calendar.YEAR)+"-"+(calendar.get(Calendar.MONTH)+1)+"-"+calendar.get(Calendar.DAY_OF_MONTH); //format AAAA-MM-JJ sous derby
            int sessionID = listeUtilisateur.addUtilisateur(new UtilisateurBean(1, 1, login, nom, prenom, mail, pass1, date));
            if (sessionID != 0) {
                request.getSession().setAttribute("sessionID", sessionID);
                request.getSession().setAttribute("sessionLogin", login);
                request.getSession().setAttribute("sessionGroupe", 1);
            }
        }
	else {
	    request.setAttribute("erreur", "Erreur : mot de passe.");
	}
        
        return new ActionFlow(vue, vue + ".jsp", false);
    }

}
